package com.origin.learn.dbpool;

import java.sql.Connection;
import java.util.concurrent.BlockingQueue;

/**
 * @Description: 连接池接口类，包括了一些连接池通用方法
 * @Date: 2020/2/28
 * @Time: 15:55
 * @Created by:   dingtao
 * @Modified by:
 * @Modified at:
 */
public interface ConnectionPool {

    /**
     * 获取连接池初始化大小
     * @return
     */
    int getInitSize();

    /**
     * 获取连接池最大大小
     * @return
     */
    int getMaxSize();

    /**
     * 获取连接池正常大小，该值在初始化大小和最大大小之间
     * @return
     */
    int getCoreSize();

    /**
     * 获取池中当前可用数量
     * @return
     */
    int getActiveCount();

    /**
     * 获取连接池自动维护池内连接数量的自检间隔时间
     * @return
     */
    long getCheckIntervalTime();

    /**
     * 池还活着不
     * @return
     */
    boolean isAlive();

    /**
     * 干掉池
     */
    void kill();

    /**
     * 从池中获取一个连接
     * @return
     */
    Connection getConnection();

    /**
     * 将使用完毕的连接丢回池中
     * @param connection
     * @return
     */
    boolean putBackConnection(Connection connection);

    /**
     * 创建一个连接的方法
     * @return
     */
    Connection createConnection();

    /**
     * 获取池中存放存的队列
     * @return
     */
    BlockingQueue<Connection> getPool();
}
